home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / unix / volume9 / elm2 / part18 < prev    next >
Encoding:
Internet Message Format  |  1987-03-10  |  53.1 KB

  1. Subject:  v09i018:  ELM Mail System, Part18/19
  2. Newsgroups: mod.sources
  3. Approved: rs@mirror.TMC.COM
  4.  
  5. Submitted by: Dave Taylor <hplabs!taylor>
  6. Mod.sources: Volume 9, Issue 18
  7. Archive-name: elm2/Part18
  8.  
  9. #! /bin/sh
  10. # This is a shell archive.  Remove anything before this line,
  11. # then unpack it by saving it in a file and typing "sh file".
  12. # If this archive is complete, you will see the message:
  13. #        "End of archive 18 (of 19)."
  14. # Contents:  Configure.sh doc/Users.guide
  15. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  16. echo shar: Extracting \"Configure.sh\" \(20314 characters\)
  17. if test -f Configure.sh ; then 
  18.   echo shar: Will not over-write existing file \"Configure.sh\"
  19. else
  20. sed "s/^X//" >Configure.sh <<'END_OF_Configure.sh'
  21. X: Use /bin/sh
  22. X#
  23. X# Configure.sh, a shell script for configuring the Elm mail system for
  24. X#     your site and desires.  This script uses some ideas ripped out
  25. X#    of the 'rn' install script.  Thanks Larry!
  26. X#
  27. X
  28. Xexport PATH || (sh $0 ; kill $$)
  29. X
  30. XSHELL=/bin/sh
  31. X
  32. XSED1=/tmp/Elm.sed1
  33. XSED2=/tmp/Elm.sed2
  34. X
  35. Xif [ -f /bin/rm ]
  36. Xthen
  37. X  rm=/bin/rm
  38. Xelse
  39. X  rm=rm
  40. Xfi
  41. X
  42. X$rm -f $SED1 $SED2
  43. Xtouch $SED1 $SED2
  44. Xchmod 777 $SED1 $SED2
  45. X
  46. X# first test - is stdin still free for answering questions??
  47. Xif [ ! -t 0 ]
  48. Xthen
  49. X  echo "Please use 'sh Configure.sh' rather than 'sh < Configure.sh'"
  50. X  exit 1
  51. Xfi
  52. X
  53. X# next let's see what sorta echo flag we have here...
  54. X
  55. Xif [ "`echo -n`" = "-n" ]
  56. Xthen
  57. X  nflag=""
  58. X  cflag="\\c" 
  59. Xelse
  60. X  nflag="-n"
  61. X  cflag=""
  62. Xfi
  63. X
  64. X# now the intro blurb
  65. X
  66. Xcat << END_OF_INTRO
  67. X
  68. X                   Elm Configuration Script, v4
  69. X       
  70. X      
  71. X    This is the configuration script for the Elm mail system.  By using
  72. X    it rather than editing the "hdrs/sysdefs.h" file, it is hoped that
  73. X    the installation process will be considerably easier.
  74. X
  75. X    On all questions, the value in [square brackets] is the default that 
  76. X    will be used if you just press RETURN...
  77. X
  78. X
  79. XEND_OF_INTRO
  80. X
  81. Xecho "Trying to figure out what sort of OS you're on..."
  82. X
  83. X# next interesting part - figure out what OS we're on
  84. X
  85. Xos_name=""
  86. X
  87. X$rm -f .osname
  88. Xtouch .osname
  89. X
  90. Xcat << 'EOF' > .get_osname
  91. X
  92. Xuname
  93. X
  94. Xif [ $? != 0 ] 
  95. Xthen
  96. X  if [ -f /vmunix ]
  97. X  then
  98. X    echo "bsd" > .osname
  99. X  else
  100. X    exit 0
  101. X  fi
  102. Xfi
  103. X
  104. Xif [ "`uname -s`" != "" ]
  105. Xthen
  106. X   uname -s | tr '[A-Z]' '[a-z]' > .osname
  107. Xfi
  108. X
  109. Xexit 0
  110. XEOF
  111. X
  112. Xsh .get_osname > /dev/null 2>&1
  113. X
  114. Xif [ -f .osname ] 
  115. Xthen
  116. X  os_name="`cat .osname`"
  117. X  $rm -f .osname
  118. Xfi
  119. X
  120. X$rm -f .get_osname
  121. X
  122. Xif [ "$os_name" = "" ] 
  123. Xthen
  124. X  cat << THE_END
  125. X
  126. XI cannot figure out what sort of operating system you're running here.  Please
  127. Xtype in the NAME of the OS you're running or the name of the machine you're
  128. XTHE_END
  129. X
  130. X  echo $nflag "running on.  I'll check the name in a minute : " $cflag
  131. X
  132. X  read junk morejunk
  133. X  
  134. X  os_name=`echo $junk | tr '[A-Z]' '[a-z]'`
  135. Xfi
  136. X
  137. XOS_FLAG="HUH??"
  138. X
  139. Xwhile [ "$OS_FLAG" = "HUH??" ]
  140. Xdo
  141. X
  142. X  case $os_name in
  143. X    hp)        NAME="HP-UX"; OS_FLAG=""        ;;
  144. X    hp-ux)     NAME="HP-UX"; OS_FLAG="";           ;;
  145. X    vax)    NAME="BSD"; OS_FLAG="BSD";      ;;
  146. X    vaxen)    NAME="BSD"; OS_FLAG="BSD";      ;;
  147. X    bsd)    NAME="BSD"; OS_FLAG="BSD";      ;;
  148. X    uts)    NAME="UTS"; OS_FLAG="UTS";      ;;
  149. X    sun)    NAME="BSD"; OS_FLAG="";        ;;
  150. X    pyramid)    NAME="Pyramid BSD"; OS_FLAG="PYRAMID";    ;;
  151. X    amdahl)    NAME="UTS"; OS_FLAG="UTS";      ;;
  152. X    sv_*)    NAME="System V"; OS_FLAG="";        ;;
  153. X    svii_*)    NAME="System VII"; OS_FLAG="";        ;;
  154. X    v5)        NAME="System V"; OS_FLAG="";        ;;
  155. X    v7)        NAME="System VII"; OS_FLAG="";        ;;
  156. X    eunice)    NAME="Eunice"; OS_FLAG="";        ;;
  157. X    convergent)    NAME="Convergent BSD"; OS_FLAG="BSD";        ;;
  158. X    berkeley)    NAME="BSD"; OS_FLAG="BSD";        ;;
  159. X    ultrix)    cat << THE_END
  160. X
  161. XI know that this is a breed of Unix, but I don't know what TYPE of OS it
  162. Xis like.  Please enter the NAME of the OS that this is most like (e.g. "BSD")
  163. Xand we'll go from there.
  164. X
  165. XTHE_END
  166. X                    ;;
  167. X    xenix)    cat << THE_END
  168. X
  169. XYou're outta luck.  Xenix (dumb OS that it is only allows 6 character 
  170. Xidentifier names.  You'll need to go in and LABORIOUSLY translate all the
  171. XVERY LONG identifier names to the right length.   The correct response to 
  172. Xseeing this message is to call your vendor and get ANGRY!!!!
  173. X
  174. XMeanwhile, we might as well just quit here.  Sorry.
  175. XTHE_END
  176. Xexit 1
  177. X                    ;;
  178. X    *)        cat << THE_END
  179. X
  180. XI don't know what OS you're specifying!  The only one's I know of are;
  181. X
  182. X  HP-UX, BSD, UTS, Eunice, Xenix, Ultrix, V5, and V7
  183. X
  184. XI also know the machines
  185. X
  186. X  HP, Amdahl, Sun, Vaxen, Convergent and Pyramid
  187. X
  188. XIf you're not among this list, you'll need to pick the closest OS name.  
  189. XTHE_END
  190. X
  191. X    echo " "
  192. X    echo $nflag "Please choose again: " $cflag
  193. X    read os_name
  194. X    ;;
  195. X  esac
  196. X
  197. Xdone
  198. X
  199. Xecho " "
  200. Xecho " "
  201. Xecho you\'re on the following version of Unix: $NAME
  202. X
  203. Xecho " "
  204. Xecho "Now we can get down to those questions..."
  205. Xecho " "
  206. X
  207. Xcat << THE_END
  208. X
  209. XFirst off, should the program use "uuname" rather than trying to read 
  210. XTHE_END
  211. X
  212. Xnot_using_lsys_file=0
  213. X
  214. Xanswer="yes"
  215. Xecho $nflag "the L.sys file (y/n) [yes] ? "  $cflag
  216. Xread answer
  217. X
  218. Xif [ "$answer" = "n" -o "$answer" = "no" ]
  219. Xthen
  220. X  not_using_lsys_file=1
  221. X  echo "s/#define USE_UUNAME/\/** #define USE_UUNAME **\//" >> $SED1
  222. Xfi
  223. X
  224. Xcat << THE_END
  225. X
  226. XNext, are you running smail, a "gateway" configuration of sendmail, or some 
  227. Xother program that means the program shouldn't touch any of the addresses 
  228. XTHE_END
  229. X
  230. Xanswer="no"
  231. Xdont_touch_addresses=0
  232. Xecho $nflag "that users type in (y/n) [no] ? " $cflag
  233. Xread answer
  234. X
  235. Xif [ "$answer" = "y" -o "$answer" = "yes" ]
  236. Xthen
  237. X  dont_touch_addresses=1
  238. X  echo \
  239. X"s/\/\*\* #define DONT_TOUCH_ADDRESSES \*\*\//#define DONT_TOUCH_ADDRESSES /" \
  240. X  >> $SED1
  241. X  echo \
  242. X"s/\/\*\* #define DONT_OPTIMIZE_RETURN \*\*\//#define DONT_OPTIMIZE_RETURN /" \
  243. X  >> $SED1
  244. Xfi
  245. X
  246. Xcat << THE_END
  247. X
  248. XDoes your site receive mail with valid "Reply-To:" and "From:" fields in
  249. XTHE_END
  250. X
  251. Xanswer="no"
  252. Xecho $nflag "the headers (y/n) [no] ? " $cflag
  253. Xread answer
  254. X
  255. Xif [ "$answer" != "y" -a "$answer" != "yes" ]
  256. Xthen
  257. X  echo \
  258. X"s/#define USE_EMBEDDED_ADDRESSES/\/** #define USE_EMBEDDED_ADDRESSES **\//" \
  259. X  >> $SED1
  260. Xfi
  261. X
  262. Xcat << THE_END
  263. X
  264. X-------------------------------------------------------------------------------
  265. X
  266. XHow about memory?  If you have a lot, you can enter a fairly large number
  267. Xfor the next few questions...if not, you'll probably want to enter the
  268. Xsuggested small-system values.  (This applies to the speed of the swapping
  269. Xon your system too - if you're on a FAST system, use the big values!)
  270. X
  271. XFirst, how many aliases should be allowed for an individual user? The suggested
  272. Xvalues are 503 for blindly fast systems, 251 for average systems and 127 for
  273. XTHE_END
  274. X
  275. Xmax_ualiases="NONE"
  276. X
  277. Xwhile [ "$max_ualiases" = "NONE" ] 
  278. Xdo 
  279. X
  280. X  echo $nflag "slow systems.  Number of aliases [251] ? " $cflag 
  281. X
  282. X  read junk
  283. X
  284. X  if [ "$junk" = "" ] 
  285. X  then
  286. X    junk=251
  287. X  fi
  288. X
  289. X  if [ $junk -lt 50 -o $junk -gt 1000 ] 
  290. X  then
  291. X    echo \
  292. X"Pretty strange answer!  I think you should reconsider and try this question "\
  293. X    echo "again..."
  294. X    echo " "
  295. X  else
  296. X    max_ualiases=$junk
  297. X    echo "s/>251</$max_ualiases/" >> $SED1
  298. X    case $junk in
  299. X    127) default=223    ;;
  300. X    503) default=739    ;;
  301. X    *  ) default=503    ;;
  302. X    esac
  303. X  fi
  304. Xdone
  305. X
  306. Xmax_saliases="NONE"
  307. X
  308. Xwhile [ "$max_saliases" = "NONE" ] 
  309. Xdo 
  310. X
  311. X  echo $nflag "Max number of system aliases available  [$default] ? " $cflag
  312. X
  313. X  read junk
  314. X
  315. X  if [ "$junk" = "" ] 
  316. X  then
  317. X   junk=$default
  318. X  fi
  319. X
  320. X  if [ $junk -lt 50 -o $junk -gt 1000 ] 
  321. X  then
  322. X    echo "Pretty far out value for this question!  I think you should reconsider"
  323. X    echo "your answer and try this question again..."
  324. X    echo " "
  325. X  else
  326. X    max_saliases=$junk
  327. X    echo "s/>503</$max_saliases/" >> $SED1
  328. X  fi
  329. Xdone
  330. X
  331. Xcat << THE_END
  332. X
  333. XThe next pair of questions have to do with what to do when another program has 
  334. Xlocked a mailbox...
  335. X
  336. XFirst, how many times should the program check for the removal of the lock
  337. XTHE_END
  338. X
  339. Xdefault=6
  340. X
  341. Xmax_attempts="NONE"
  342. X
  343. Xwhile [ "$max_attempts" = "NONE" ] 
  344. Xdo 
  345. X
  346. X  echo $nflag "file before giving up? [6] " $cflag
  347. X
  348. X  read junk
  349. X
  350. X  if [ "$junk" = "" ] 
  351. X  then
  352. X   junk=$default
  353. X  fi
  354. X
  355. X  if [ $junk -lt 3 -o $junk -gt 10 ] 
  356. X  then
  357. X    echo \
  358. X"The recommended range is 3-10   ...Number of times to check lock"
  359. X  else
  360. X    max_attempts=$junk
  361. X    echo "s/>6</$max_attempts/" >> $SED1
  362. X  fi
  363. Xdone
  364. X
  365. Xecho " "
  366. Xanswer="no"
  367. Xecho $nflag "Should it REMOVE the lockfile after $max_attempts checks [no] ?" \
  368. X     $cflag
  369. Xread answer
  370. X
  371. Xif [ "$answer" != "y" -a "$answer" != "yes" ]
  372. Xthen
  373. X  echo \
  374. X"s/#define REMOVE_AT_LAST/\/** #define REMOVE_AT_LAST **\//" \
  375. X  >> $SED1
  376. Xfi
  377. X
  378. Xif [ "$NAME" = "BSD" ]
  379. Xthen 
  380. X  ps="ps -cax"
  381. Xelse
  382. X  ps="ps -ef"
  383. Xfi
  384. X
  385. Xecho " "
  386. Xecho " "
  387. Xecho "poking about a bit.."
  388. X
  389. Xresult="`$ps | grep sendmail | grep -v grep`"
  390. X
  391. Xif [ "$result" = "" ]
  392. Xthen
  393. X  if [ -f /usr/lib/sendmail -a -f /usr/lib/sendmail.cf ]
  394. X  then
  395. X    echo \(sendmail available - assuming you don\'t run it as a daemon\)
  396. X    result="ok"
  397. X  fi
  398. Xfi
  399. X
  400. Xif [ "$result" != "" ]
  401. Xthen
  402. X  echo "You're running sendmail.  Well done, I guess..."
  403. X  echo "s/\/\*\* #define ALLOW_BCC \*\*\//#define ALLOW_BCC/" \
  404. X    >> $SED1
  405. X  echo "s/\/\*\* #define DONT_ADD_FROM \*\*\//#define DONT_ADD_FROM/" \
  406. X    >> $SED1
  407. X    echo \
  408. X "s/#define USE_DOMAIN/\/** #define USE_DOMAIN **\//" \
  409. X    >> $SED1
  410. Xelse
  411. X
  412. X  cat << THE_END
  413. X
  414. XSince you're not running sendmail, should I check local user entered addresses
  415. XTHE_END
  416. X
  417. Xanswer="yes"
  418. Xecho $nflag "against the valid mailboxes on this system [yes] ? " $cflag
  419. Xread answer
  420. X
  421. Xif [ "$answer" != "y" -a "$answer" != "yes" -a "$answer" != "" ]
  422. Xthen
  423. X  echo \
  424. X"s/#define NOCHECK_VALIDNAME/\/** #define NOCHECK_VALIDNAME **\//" \
  425. X  >> $SED1
  426. Xfi
  427. X
  428. Xcat << THE_END
  429. X
  430. XAre you running a machine where you want to have a domain name appended to the
  431. XTHE_END
  432. X
  433. Xanswer="yes"
  434. Xecho $nflag "hostname on outbound mail [no] ? " $cflag
  435. Xread answer
  436. X
  437. Xif [ "$answer" != "y" -a "$answer" != "yes" ]
  438. Xthen
  439. X    echo \
  440. X "s/#define USE_DOMAIN/\/** #define USE_DOMAIN **\//" \
  441. X    >> $SED1
  442. Xelse
  443. X  echo " "
  444. X  echo $nflag "Enter the domain name (include leading '.') : " $cflag
  445. X  read answer
  446. X  echo "s/<enter your domain here>/$answer/" >> $SED1
  447. Xfi
  448. X
  449. Xfi
  450. X
  451. X# next let's see if we can find the vfork command on this system..
  452. X
  453. Xcat << EOF > .test.c
  454. Xmain()
  455. X{
  456. X    (void) vfork();
  457. X}
  458. XEOF
  459. X
  460. Xif [ "$NAME" = "UTS" ]
  461. Xthen
  462. Xcat << EOF > .vfork
  463. Xcc -la .test.c
  464. XEOF
  465. Xelse
  466. Xcat << EOF > .vfork
  467. Xcc .test.c
  468. XEOF
  469. Xfi
  470. X
  471. Xsh .vfork > .log 2>& 1
  472. X
  473. Xif [ "`cat .log | wc -l`" -eq "0" ]
  474. Xthen
  475. X  echo "You have virtual memory system calls available.  Cool..."
  476. Xelse
  477. X  cat << THE_END
  478. X
  479. XYour machine doesn't seem to have the vfork command available.  Should I assume
  480. XTHE_END
  481. X
  482. X  answer="no"
  483. X  echo $nflag "you have it, anyway [no] ? " $cflag
  484. X  read answer
  485. X
  486. Xif [ "$answer" != "y" -a "$answer" != "yes" ]
  487. X  then
  488. X    echo "s/\/\*\* #define NO_VM \*\*\//#define NO_VM/" >> $SED1
  489. X  fi
  490. Xfi
  491. X
  492. X$rm -f a.out .test.c .vfork .log
  493. X
  494. X# next let's see if we have the gethostname() system call...
  495. X
  496. Xcat << EOF > .test.c
  497. Xmain()
  498. X{
  499. X    (void) gethostname();
  500. X}
  501. XEOF
  502. X
  503. Xcat << EOF > .hostname
  504. Xcc .test.c
  505. XEOF
  506. X
  507. Xsh .hostname > .log 2>& 1
  508. X
  509. Xif [ "`cat .log | wc -l`" -eq "0" ]
  510. Xthen
  511. X  echo "You have the 'gethostname()' system call..."
  512. Xelse
  513. X  echo "s/\/\*\* #define NEED_GETHOSTNAME \*\*\//#define NEED_GETHOSTNAME/" \
  514. X  >> $SED1
  515. Xfi
  516. X
  517. X$rm -f a.out .test.c .hostname .log
  518. X
  519. X# next let's see if we have long variable names...
  520. X
  521. Xcat << EOF > .test.c
  522. Xmain()
  523. X{
  524. X    int this_is_a_long_variable=0;
  525. X
  526. X    (void) this_is_a_long_variable_routine_name(this_is_a_long_variable);
  527. X    
  528. X}
  529. Xthis_is_a_long_variable_routine_name() { }
  530. XEOF
  531. X
  532. Xcat << EOF > .varnames
  533. Xcc .test.c
  534. XEOF
  535. X
  536. Xsh .varnames > .log 2>& 1
  537. X
  538. Xif [ "`cat .log | wc -l`" -eq "0" ]
  539. Xthen
  540. X  echo "You have long variable names.  Well done!!!!!"
  541. Xelse
  542. X  echo "How embarassing.  Your C compiler doesn't support long variables..."
  543. X  echo "s/\/\*\* #define SHORTNAMES \*\*\//#define SHORTNAMES/" \
  544. X  >> $SED1
  545. Xfi
  546. X
  547. X$rm -f a.out .test.c .varnames .log
  548. X
  549. Xif [ $dont_touch_addresses = 0 ]
  550. Xthen
  551. Xcat << THE_END
  552. X
  553. XWhen given a machine that you talk to directly, should the 'pathalias' route to
  554. XTHE_END
  555. X
  556. X answer="no"
  557. X echo $nflag "the machine be used instead [no] ? " $cflag
  558. X read answer
  559. X
  560. X if [ "$answer" != "y" -a "$answer" != "yes" ]
  561. X then
  562. X    echo \
  563. X "s/#define LOOK_CLOSE_AFTER_SEARCH/\/** #define LOOK_CLOSE_AFTER_SEARCH **\//"\
  564. X    >> $SED1
  565. X fi
  566. Xfi
  567. X
  568. XanswerX   fi
  569. X fi
  570. Xfi
  571. X
  572. Xuse_dbm=0
  573. X
  574. Xif [ $dont_touch_addresses = 0 ]
  575. Xthen
  576. X  if [ -f $answer.pag -a -f $answer.dir ]
  577. X  then
  578. X    echo "You have pathalias as a DBM file...I'll use that instead."
  579. X    echo "s^/\*\* #define USE_DBM \*\*/^#define USE_DBM^" >> $SED1
  580. X    use_dbm=1
  581. X  fi
  582. Xfi
  583. X
  584. Xcase $OS_FLAG in 
  585. X  BSD) echo "s/>os-define</-DBSD/"    >> $SED2
  586. X       echo "s/>lib2</-lcurses/"      >> $SED2
  587. X       if [ $use_dbm = 1 ]
  588. X       then
  589. X         echo "s/>libs</-ltermcap -ldbm/" >> $SED2
  590. X       else
  591. X         echo "s/>libs</-ltermcap/"       >> $SED2
  592. X       fi
  593. X       ;;
  594. X
  595. X  PYRAMID) echo "s/>os-define</"-DBSD -DNO_VAR_ARGS"/" >> $SED2
  596. X       echo "s/>lib2</-lcurses/"      >> $SED2
  597. X       if [ $use_dbm = 1 ]
  598. X       then
  599. X         echo "s/>libs</-ltermcap -ldbm/"     >> $SED2
  600. X       else
  601. X         echo "s/>libs</-ltermcap/"     >> $SED2
  602. X       fi
  603. X       ;;
  604. X
  605. X  UTS) echo "s/>os-define</-DUTS/"    >> $SED2
  606. X       echo "s/>lib2</-la -lq/"       >> $SED2
  607. X       if [ $use_dbm = 1 ]
  608. X       then
  609. X         echo "s/>libs</-lcurses -ldbm/" >> $SED2
  610. X       else
  611. X         echo "s/>libs</-lcurses/"       >> $SED2
  612. X       fi
  613. X       ;;
  614. X
  615. X  *)   echo "s/>os-define<//"         >> $SED2
  616. X       echo "s/>lib2<//"              >> $SED2
  617. X       if [ $use_dbm = 1 ] 
  618. X       then
  619. X         echo "s/>libs</-ltermcap -ldbm/" >> $SED2
  620. X       else
  621. X         echo "s/>libs</-ltermcap/"       >> $SED2
  622. X       fi
  623. X       ;;
  624. X
  625. Xesac
  626. X
  627. Xif [ $dont_touch_addresses = 0 ]
  628. Xthen
  629. X if [ ! -f /usr/lib/domains ] 
  630. X then
  631. X   echo $nflag "Where does the 'domains' file live ? " $cflag
  632. X   read answer
  633. X
  634. X   if [ "$answer" != "" ]
  635. X   then
  636. X     echo "s^/usr/lib/domains^$answer^" >> $SED1
  637. X   fi
  638. X fi
  639. Xfi
  640. X
  641. Xif [ $not_using_lsys_file = 1 ]
  642. Xthen
  643. X  if [ ! -f /usr/lib/uucp/L.sys ]
  644. X  then
  645. X    echo $nflag "Where does the 'L.sys' file live ? " $cflag
  646. X    read answer
  647. X
  648. X    if [ "$answer" != "" ]
  649. X    then
  650. X      echo "s^/usr/lib/uucp/L.sys^$answer^" >> $SED1
  651. X    fi
  652. X  fi
  653. Xfi
  654. Xif [ ! -d /tmp ]
  655. Xthen 
  656. X  echo $nflag "/tmp isn't a directory!  What should I use?? " $cflag
  657. X  read answer
  658. X
  659. X  if [ "$answer" != "" ]
  660. X  then
  661. X    echo "s^/tmp^$answer^" >> $SED1
  662. X  fi
  663. Xfi
  664. X
  665. Xif [ ! -f /usr/ucb/vi -a "$os_name" = "BSD" ]
  666. Xthen
  667. X  echo $nflag "I can't find the 'vi' editor!  Where is it? " $cflag
  668. X  read answer
  669. X
  670. X  if [ "$answer" != "" ]
  671. X  then
  672. X    echo "s^/usr/ucb/vi^$answer^" >> $SED1
  673. X  fi
  674. Xelif [ ! -f /usr/bin/vi -a "$os_name" = "" ]
  675. Xthen
  676. X  echo $nflag \
  677. X    "I can't find the 'vi' editor!  Where is it? " $cflag
  678. X  read answer
  679. X
  680. X  if [ "$answer" != "" ]
  681. X  then
  682. X    echo "s^/usr/bin/vi^$answer^" >> $SED1
  683. X  fi
  684. Xfi
  685. X
  686. Xif [ ! -d /usr/spool/mail -a "$os_name" = "BSD" ]
  687. Xthen
  688. X  echo $nflag "I can't find your inbound mail directory!  Where is it? " $cflag
  689. X  read answer
  690. X
  691. X  if [ "$answer" != "" ]
  692. X  then
  693. X    echo "s^/usr/spool/mail^$answer^" >> $SED1
  694. X  fi
  695. Xelif [ ! -d /usr/mail -a "$os_name" = "" ]
  696. Xthen
  697. X  echo $nflag "I can't find your inbound mail directory!  Where is it? " $cflag
  698. X  read answer
  699. X
  700. X  if [ "$answer" != "" ]
  701. X  then
  702. X    echo "s^/usr/mail^$answer^" >> $SED1
  703. X  fi
  704. Xfi
  705. X
  706. Xif [ ! -f /bin/rm ]
  707. Xthen
  708. X  echo $nflag "Where's the 'rm' program? " $cflag
  709. X  read answer
  710. X
  711. X  if [ "$answer" != "" ]
  712. X  then
  713. X    echo "s^/bin/rm^$answer^" >> $SED1
  714. X  fi
  715. Xfi
  716. X
  717. Xif [ ! -f /bin/cat ]
  718. Xthen
  719. X  echo $nflag "Where's the 'cat' program? " $cflag
  720. X  read answer
  721. X
  722. X  if [ "$answer" != "" ]
  723. X  then
  724. X    echo "s^/bin/rm^$answer^" >> $SED1
  725. X  fi
  726. Xfi
  727. Xif [ ! -c /dev/rct ]
  728. Xthen
  729. X  if [ ! -c /dev/rmt ]
  730. X  then
  731. X    echo $nflag "What's the name of your remote-tape unit? " $cflag
  732. X    read answer
  733. X
  734. X    if [ "$answer" = "" ]
  735. X    then
  736. X      echo "s^>tapeunit<^unknown-remote-tape-unit^" >> $SED2
  737. X    else
  738. X      if [ ! -c $answer ] 
  739. X      then
  740. X    if [ -c /dev/$answer ]
  741. X    then
  742. X          echo "s^>tapeunit<^/dev/$answer^" >> $SED2
  743. X        else
  744. X          echo \
  745. X           "I can't find either $answer or /dev/$answer.  I'll set it to junk" 
  746. X          echo "s^>tapeunit<^unknown-remote-tape-unit^" >> $SED2
  747. X        fi
  748. X      else
  749. X        echo "s^>tapeunit<^$answer^" >> $SED2
  750. X      fi
  751. X    fi
  752. X  else
  753. X    echo "s^>tapeunit<^/dev/rmt^" >> $SED2
  754. X  fi
  755. Xelse
  756. X  echo "s^>tapeunit<^/dev/rct^" >> $SED2
  757. Xfi
  758. X
  759. Xif [ ! -d /usr/local/bin ]
  760. Xthen
  761. X  echo $nflag "Where do you want the system software installed? " $cflag
  762. X  read answer
  763. X
  764. X  if [ "$answer" = "" ]
  765. X  then
  766. X    echo "s^>dest-dir<^unknown-destination-directory^" >> $SED2
  767. X  else
  768. X    if [ -d $answer ]
  769. X    then
  770. X      echo "s^>dest-dir<^$answer^" >> $SED2
  771. X    else
  772. X      echo "I don't know what you're talking about.  I'll set it to junk" 
  773. X      echo "s^>dest-dir<^unknown-destination-directory^" >> $SED2
  774. X    fi
  775. X  fi
  776. Xelse
  777. X  echo "s^>dest-dir<^/usr/local/bin^" >> $SED2
  778. Xfi
  779. X
  780. Xif [ ! -f /usr/bin/troff ]
  781. Xthen
  782. X  if [ ! -f /usr/local/bin/troff ]
  783. X  then
  784. X    if [ ! -f /usr/contrib/bin/troff ]
  785. X    then
  786. X      if [ ! -f /usr/ucb/troff ]
  787. X      then
  788. X        if [ ! -f /bin/troff ]
  789. X        then
  790. X          echo $nflag "Where does the 'troff' program live? " $cflag
  791. X       read answer
  792. X
  793. X      if [ "$answer" = "" ]
  794. X      then
  795. X            echo "s/>troff</nroff/" >> $SED2
  796. X      else
  797. X            if [ -f $answer ]
  798. X        then
  799. X              echo "s^>troff<^$answer^" >> $SED2
  800. X              troff=$answer
  801. X        else
  802. X          echo "Still can't find it.  I'll set it to \"nroff\" instead."
  803. X              echo "s/>troff</nroff/" >> $SED2
  804. X        fi
  805. X      fi
  806. X    else
  807. X          echo "s^>troff<^/bin/troff^" >> $SED2
  808. X          troff=/bin/troff
  809. X        fi
  810. X      else
  811. X        echo "s^>troff<^/usr/ucb/troff^" >> $SED2
  812. X        troff=/usr/ucb/troff
  813. X      fi
  814. X    else
  815. X      echo "s^>troff<^/usr/contrib/bin/troff^" >> $SED2
  816. X      troff=/usr/contribbin/troff
  817. X    fi
  818. X  else
  819. X    echo "s^>troff<^/usr/local/bin/troff^" >> $SED2
  820. X    troff=/usr/local/bin/troff
  821. X  fi
  822. Xelse
  823. X  echo "s^>troff<^/usr/bin/troff^" >> $SED2
  824. X  troff=/usr/bin/troff
  825. Xfi
  826. X
  827. X# phew!
  828. X
  829. Xtroffdir=`dirname $troff`
  830. X
  831. Xif [ -f $troffdir/tbl ]
  832. Xthen
  833. X  echo "s^>tbl<^$troffdir/tbl^" >> $SED2
  834. Xelse
  835. X  echo $nflag "Where does the 'tbl' program live? " $cflag
  836. X  read answer
  837. X
  838. X  if [ "$answer" = "" ]
  839. X  then
  840. X    echo "s^>tbl<^cat^" >> $SED2
  841. X  elif [ -f $answer ]
  842. X  then
  843. X    echo "s^>tbl<^$answer^" >> $SED2
  844. X  else
  845. X    echo "I can't find that either.  I'll just set it to junk..."
  846. X    echo "s^>tbl<^cat^" >> $SED2
  847. X  fi
  848. Xfi
  849. X
  850. Xif [ -f /bin/cc ]
  851. Xthen
  852. X  echo "s^>cc<^/bin/cc^" >> $SED2
  853. Xelse
  854. X  echo $nflag "Where does the 'C' compiler live? " $cflag
  855. X  read answer
  856. X
  857. X  if [ "$answer" = "" ]
  858. X  then
  859. X    cat << THE_END
  860. X
  861. XI hope you realize that without a "C" compiler there's no point in doing any
  862. Xof this.  If we can't compile anything then this is just so much disk filler.
  863. X
  864. XIn fact, thinking about it, let's just quit right now.
  865. X
  866. XTHE_END
  867. X
  868. X    exit 1
  869. X  fi
  870. X
  871. X  if [ -f $answer ]
  872. X  then
  873. X    echo "s^>cc<^$answer^" >> $SED2
  874. X  else
  875. X    cat << THE_END
  876. X
  877. XI couldn't find what you specified, pal.  I hope you realize that without a 
  878. X"C" compiler there's no point in doing any of this.  If we can't compile 
  879. Xanything then this system is just so much disk filler.
  880. X
  881. XIn fact, thinking about it, let's just quit right now.
  882. X
  883. XTHE_END
  884. X    exit 1
  885. X  fi
  886. Xfi
  887. X
  888. Xecho "s^>rm<^$rm -f^" >> $SED2
  889. X
  890. Xif [ -f /bin/mv ]
  891. Xthen
  892. X  echo "s^>mv<^/bin/mv -f^" >> $SED2
  893. Xelse
  894. X  echo "s^>mv<^mv -f^" >> $SED2  
  895. Xfi
  896. X
  897. Xif [ -f /bin/cp ]
  898. Xthen
  899. X  echo "s^>cp<^/bin/cp^" >> $SED2
  900. Xelse
  901. X  echo "s^>cp<^cp^" >> $SED2  
  902. Xfi
  903. X
  904. Xcat << END
  905. X
  906. XThat's it.  Just  have to do some patching up and such...hang loose for a 
  907. Xminute or two, please...
  908. X
  909. XEND
  910. X
  911. X# process the four Makefiles accordingly...
  912. X
  913. Xecho "1 - processing the file \"Makefile\"..."
  914. Xcat Makefile.mstr | sed -f $SED2 > Makefile
  915. X
  916. Xecho "2 - processing the file \"src/Makefile\"..."
  917. Xcat src/Makefile.mstr | sed -f $SED2 > src/Makefile
  918. X
  919. Xecho "3 - processing the file \"utils/Makefile\"..."
  920. Xcat utils/Makefile.mstr | sed -f $SED2 > utils/Makefile
  921. X
  922. Xecho "4 - processing the file \"filter/Makefile\"..."
  923. Xcat filter/Makefile.mstr | sed -f $SED2 > filter/Makefile
  924. X
  925. X# then filter the sysdefs file through the sed script we've created!
  926. X
  927. Xecho "Finally, processing the file \"hdrs/sysdefs.h\"..."
  928. X
  929. Xif [ -f hdrs/sysdefs.h ]
  930. Xthen
  931. X  mv hdrs/sysdefs.h hdrs/sysdefs.old
  932. Xfi
  933. X
  934. Xcat hdrs/sysdefs.master | sed -f $SED1 > hdrs/sysdefs.h
  935. X
  936. Xecho Done\!
  937. X
  938. X$rm -f $SED1 $SED2
  939. Xexit 0
  940. END_OF_Configure.sh
  941. if test 20314 -ne `wc -c <Configure.sh`; then
  942.     echo shar: \"Configure.sh\" unpacked with wrong size!?
  943. fi
  944. chmod +x Configure.sh
  945. # end of overwriting check
  946. fi
  947. echo shar: Extracting \"doc/Users.guide\" \(31420 characters\)
  948. if test -f doc/Users.guide ; then 
  949.   echo shar: Will not over-write existing file \"doc/Users.guide\"
  950. else
  951. sed "s/^X//" >doc/Users.guide <<'END_OF_doc/Users.guide'
  952. X.PH ""
  953. X.tm I trust we've run this through tbl first...
  954. X\"
  955. X\"  Users guide to the ELM mail system.
  956. X\"  format with 'tbl Users.guide | troff -mm > Users.fmtd
  957. X\"  or something similar.
  958. X\"
  959. X\"  (C) Copyright 1986 Dave Taylor
  960. X\"
  961. X\"  Last update: January 19th, 1987
  962. X\"
  963. X.PF ""
  964. X\"  Define the big box macro for troff
  965. X.de eb
  966. X.sp -1    
  967. X.nf
  968. X\h'-.5n'\L'|\\nau-1'\l'\\n(.lu+1n\(ul'\L'-|\\nau+1'\l'|0u-.5n\(ul'
  969. X.fi
  970. X..
  971. X.ds HF 3  3 
  972. X.ds HP 12 12
  973. X.SA 1
  974. X.nr Hy 1
  975. X.nr Pt 1
  976. X.nr Pi 8
  977. X.lg 1
  978. X.HM 1 1
  979. X.rs
  980. X.sp 5
  981. X.ce 99
  982. X.ps 20
  983. X\fBElm Users Guide\fR
  984. X.sp 2
  985. X.ps 12
  986. X\fIA painless introduction to electronic mail 
  987. Xusing the \fBElm\fP mailer\fR
  988. X.sp 5
  989. XDave Taylor
  990. X.sp 
  991. XHewlett-Packard Laboratories
  992. X1501 Page Mill Road
  993. XPalo Alto CA
  994. X94304
  995. X.sp
  996. Xemail: taylor\s10@\s12hplabs.HP.COM or hplabs!taylor
  997. X.ps 10
  998. X.sp 7
  999. X\fBABSTRACT\fR
  1000. X.ce 0
  1001. X.sp
  1002. X.DS CB F
  1003. XWhile various parts of the Unix system have been
  1004. Xupdated into the `CRT' age (rather than the `teletype')
  1005. Xelectronic mail systems haven't.  This document 
  1006. Xpresents \fIElm\fR, a sophisticated
  1007. Xfull-screen mail system for interactive use.
  1008. X\fIElm\fR offers all the features of
  1009. X\fI/bin/mail\fR, \fIBerkeley Mail\fR, \fIuumail\fR, \fINMail\fR and
  1010. Xthe AT&T Mail family of Unix mailers (namely \fIPMX/TERM\fR) in a
  1011. Xunified and intuitive fashion.
  1012. X.DE
  1013. X.sp 5
  1014. X.ce
  1015. X.ps 18
  1016. X\fB\(co\fR\s12 Copyright 1986, 1987 by Dave Taylor
  1017. X.ps 10
  1018. X.SK
  1019. X.ce 99
  1020. X.ps 14
  1021. X\fBElm Users Guide\fR
  1022. X.ps 10
  1023. X.sp
  1024. X(version 1.5)
  1025. X.sp 2
  1026. XDave Taylor
  1027. XHewlett-Packard Laboratories
  1028. X1501 Page Mill Road
  1029. XPalo Alto CA
  1030. X94304
  1031. X.sp
  1032. Xemail: taylor@hplabs.HP.COM or hplabs!taylor
  1033. X.sp 2
  1034. X\*(DT
  1035. X.ce 0
  1036. X.nr P 1
  1037. X.PH "'Elm Users Guide''Version 1.5'"
  1038. X.PF "''Page \\\\nP''"
  1039. X.sp 3
  1040. X.H 1 "Introduction"
  1041. X.P 1
  1042. XThe Unix\v'-.3'\s5TM\s10\v'.3' operating system was originally 
  1043. Xwritten on a small PDP machine
  1044. Xto work with teletypewriters.  Consequently, all the original software for
  1045. Xthe operating system was written with a `tty' in mind - they were all 
  1046. Xline oriented, rather than screen oriented.
  1047. X.P
  1048. XGradually this began to change, and, with the addition of the Berkeley
  1049. X.I vi
  1050. Xvisual shell to the 
  1051. X.I ed
  1052. Xline editor, the trend began to be brought to the attention of 
  1053. XUnix systems designers.  
  1054. X.FS " "
  1055. XHistorical note: shrewd users will recognize this as being based on 
  1056. Xthe old Unix mailer
  1057. X.lg 0
  1058. X\fIMsg.\fR
  1059. X.lg 1
  1060. XThe name was changed to avoid a conflict with an old DEC-20
  1061. Xmailer, and because the new name stands for \fBEL\fRectronic \fBM\fRail,
  1062. Xwhich I think works out better!
  1063. X.FE
  1064. X.P
  1065. XUnfortunately, however, this transition was far too subtle for most software 
  1066. Xdesigners, and today there are precious few programs distributed with the
  1067. XUnix system, either from Berkeley, AT&T or variations thereof,
  1068. Xthat are full screen oriented.
  1069. X.P
  1070. XConsequently, after becoming more and more disenchanted
  1071. Xwith the existing electronic mail facilities (\fImail\fR
  1072. Xand \fIBerkeley Mail\fR, both of which are line-oriented) 
  1073. XI decided to write my own!  Once the ball was rolling it
  1074. Xbecame hard not to enhance it to death, especially as I
  1075. Xbecame more and more familiar with various different mail
  1076. Xsystems, but the result, I hope, is a solid, unified interface
  1077. Xto electronic mail suitable for almost any environment.
  1078. X.P
  1079. XThe 
  1080. X.B Elm
  1081. Xmail system comes with five documents, entitled;
  1082. X\fIThe Elm Users Guide\fR, which you're holding,
  1083. X\fIThe Elm Reference Guide\fR, \fIThe Elm Alias Users Guide\fR,
  1084. X\fIThe Elm Forms Mode Guide\fR, and \fIThe Elm Configuration 
  1085. XGuide\fR.  The names of each indicate
  1086. Xwhat they discuss (not unreasonably).
  1087. X.P
  1088. XThis particular document contains;
  1089. Xthis introduction, a tutorial session with the mailer, a
  1090. Xdiscussion of non-interactive uses of \fBElm\fR,
  1091. Xa brief foray into the \fBElm\fR utilities,
  1092. Xand finally, credits and references.
  1093. X.P
  1094. XThe \fIElm Reference Guide\fR contains;
  1095. Xa discussion of the \fI.elmrc\fR file,
  1096. Xstarting options of 
  1097. X.B Elm,
  1098. Xoutgoing mail processing,
  1099. Xresponses of various commands,
  1100. Xthe mail archive file,
  1101. Xthe Limit command,
  1102. Xthe Alias system,
  1103. Xsystem aliases etc,
  1104. Xmore on the utilities,
  1105. Xand a section for expert users and debugging.
  1106. X.P
  1107. XThe \fIElm Alias Users Guide\fR contains;
  1108. Xa further discussion of \fIuser aliases\fR
  1109. Xand \fIgroup aliases\fR,  System aliases,
  1110. Xhow to edit and install new aliases,
  1111. Xthe hostname routing database,
  1112. Xthe domain routing database,
  1113. Xand so on.
  1114. X.P
  1115. XThe \fIElm Forms Mode Guide\fR is a tutorial
  1116. Xfor those interested in sending AT&T Mail-style
  1117. Xforms to each other.
  1118. X.P
  1119. XThe \fIElm Configuration Guide\fR discusses how
  1120. Xto install and custom configure the mail system to 
  1121. Xyour local machine.  This is probably only of 
  1122. Xinterest to system adminstrators or those interested
  1123. Xin modifying the source code, which should be freely
  1124. Xavailable.  It is recommended that the \fIconfigure.sh\fR
  1125. Xscript be used for most standard installations.
  1126. X.sp
  1127. X.P
  1128. XAny comments or problems with any of the documentation or the program
  1129. Xitself are welcome: all installed systems should have an alias
  1130. Xthat will ensure that I receive any mail sent to `elm'.
  1131. X.sp 2
  1132. X.H 1 "The Main System"
  1133. X.P 1
  1134. XUpon entry to the program, the main screen will be 
  1135. Xdisplayed as below;
  1136. X\" display start, constant width, remember loc for BOX
  1137. X.DS CB
  1138. X.mk a
  1139. X.mk a
  1140. X.ce
  1141. XMailbox is '/usr/mail/mymail' with 15 messages.  [Elm 1.5]
  1142. X
  1143. X.TS
  1144. Xr c r l l l l.
  1145. X ->        1    Apr 3    rob    (24)    Doing anything tonight?
  1146. X        2    Apr 5    Joe    (154)    bug in gammon game
  1147. X        3    Apr 5    root    (13)
  1148. X        4    Apr 6    root    (7)    (continuation of previous message)
  1149. X    U    5    Apr 8    decvax!mouse    (68)    Re: net.music article decvax:495
  1150. X        6    Apr 13    John Jacobs    (194)    How can you hate RUSH?
  1151. X        7    Apr 15    kevin    (27)    More software requests
  1152. X    N    8    Apr 18    games    (26)    Hi there
  1153. X    N    9    Apr 18    Don Knuth    (354)    Your version of TeX...
  1154. X    N    10    Apr 23    Carl Smith    (53)    (More silly stuff
  1155. X    N    11    Apr 24    jad@hpcnoe    (84)    Chico?  Why go there?
  1156. X    N    12    Apr 24    Larry Fenske    (49)    hi there...
  1157. X.TE
  1158. X.sp
  1159. X.ce 3
  1160. XYou can use any of the following commands by pressing the first character;
  1161. XD)elete mail,  M)ail a message,  R)eply to mail,  U)ndelete, or Q)uit
  1162. XTo read a message, press <return>.  j = move arrow down, k = move arrow up
  1163. X
  1164. XCommand : @
  1165. X.sp 2
  1166. X\" draw box, proportional Roman font back, display end
  1167. X.eb
  1168. X.DE
  1169. X.P 0
  1170. XThere are a number of things to notice about this screen;
  1171. X.BL 4
  1172. X.LI
  1173. XFirst off, it's quite possible that on your screen the current message will
  1174. Xbe indicated by an inverse bar rather than an arrow. 
  1175. XDon't worry about it - it's just harder to have an inverse
  1176. Xbar in a document than an arrow!
  1177. X.LI
  1178. XThe top line always displays the current mail file, 
  1179. Xthe number of messages in the file, and the current 
  1180. X.B Elm
  1181. Xversion number.
  1182. X.LI
  1183. XThe arrow (``->'') (or bar) always points to the current message.  
  1184. X.LI
  1185. XThe first few characters on each line can indicate the following:
  1186. X.VL 6 5
  1187. X.LI "U"
  1188. X-  an \fIU\fRrgent message
  1189. X.LI "N"
  1190. X-  a \fIN\fRew message since you last read mail
  1191. X.LI "E"
  1192. X-  an \fIE\fRxpired message (not yet implemented)
  1193. X.LI "A"
  1194. X-  an \fIA\fRction is associated with the message
  1195. X.LI "D"
  1196. X-  the message is marked for \fID\fReletion
  1197. X.LI "+"
  1198. X-  the message is \fITagged\fR.
  1199. X.LE
  1200. X.LI
  1201. XContinuing from left to right, the next field is the message
  1202. Xnumber.  For the most part you can ignore these unless you want
  1203. Xto quickly move to a specific message (as we'll see later)
  1204. X.LI
  1205. XThe date associated with each message is the date the person
  1206. X.I sent 
  1207. Xthe message.  
  1208. X.LI 
  1209. XThe next field displayed indicates who the message is from.  
  1210. X\fBElm\fR will try to display the \fIname\fR of the person who 
  1211. Xsent the message, rather than the their return address/login.  
  1212. XSome systems don't generate the correct headers, though, hence 
  1213. Xmessages like number 11, where it's
  1214. Xthe return address of the sender...
  1215. X.LI
  1216. XThe number in parentheses is the total number of lines in the message.
  1217. X.LI
  1218. XThe final field is the subject of the message.  Notice
  1219. Xthat message 3 has no subject.
  1220. X.LI
  1221. XA maximum of twelve messages are displayed at one time \*F.
  1222. X.FS
  1223. XOn terminals with greater than 25 lines, more messages will be 
  1224. Xdisplayed automatically.  Further, if you choose to turn off
  1225. Xthe Menu display, you can have more too.
  1226. X.FE
  1227. XFurther into
  1228. Xthe document we'll learn how to change 'pages' in the mailbox. 
  1229. X.LI
  1230. XThe three line Menu display will always 
  1231. Xindicate the relevant commands.  There are actually two possible 
  1232. Xmenus that can be displayed, based
  1233. Xon the \fIuser level\fR as set from either the O)ptions screen or
  1234. Xthe \fI.elmrc\fR file.  The second menu, for more advanced users, 
  1235. Xlists more options;
  1236. X.sp
  1237. X.ce 3
  1238. X|=pipe, !=shell, ?=help, <n>=set current to n, /=search pattern
  1239. XA)lias, C)hange mailbox, D)elete, E)dit, F)orward, G)roup reply, M)ail, 
  1240. XN)ext, O)ptions, P)rint, R)eply, S)ave, T)ag, Q)uit, U)ndelete, or eX)it
  1241. X.sp 
  1242. X.LI
  1243. XFinally, the '@' character indicates where the cursor would be, awaiting
  1244. Xyour input.
  1245. X.LE
  1246. X.P 0
  1247. XThe typical action at this point is to use the 
  1248. X.I <return>
  1249. Xkey to read the current message.  This particular option actually isn't
  1250. Xnoted in the Menu display, but choosing the '?=help' option will
  1251. Xinform you of a number of choices other than those in the 
  1252. Xbasic menu!
  1253. X.P 0
  1254. XPressing this key will clear the screen and display the 
  1255. Xmessage using the local pager 
  1256. X(see \fIpager\fR in the \fI.elmrc\fR file).
  1257. X.P 0
  1258. XWhile reading is perhaps the most fundamental function that the
  1259. X.B Elm
  1260. Xprogram performs, there are a number of other options available,
  1261. Xnamely;
  1262. X\" ensure we get a reasonable chunk of this table on the page...
  1263. X.ne 10
  1264. X.sp
  1265. X.VL 25 0 1
  1266. X.LI "Command"
  1267. XAction
  1268. X.LE
  1269. X.sp
  1270. X.VL 22 3 1
  1271. X.LI "|"
  1272. XPipe current message or tagged messages to specified system command.
  1273. X.LI "!"
  1274. XShell escape.
  1275. X.LI "?"
  1276. XHelp mode - any key pressed will be explained.
  1277. X.LI "+, <space>,"
  1278. X.LI "  or <NEXT>"
  1279. XNext page of headers
  1280. X.LI "-, or <PREV>"
  1281. XPrevious page of headers
  1282. X.LI "=, or <HOME>"
  1283. XSet current message to 1
  1284. X.LI "*, or "
  1285. X.LI " <SHIFT>-<HOME>"
  1286. XSet current to last message.
  1287. X.LI "<n>"
  1288. XSet current message to number n.
  1289. X.LI "/"
  1290. XSearch for pattern in subject/from lines.
  1291. X.LI "//"
  1292. XSearch for pattern in entire mailbox.
  1293. X.LI "<"
  1294. XScan message for calendar entries\*F
  1295. X.FS 
  1296. XSome sites might opt not to have this feature
  1297. Xavailable.
  1298. X.FE
  1299. X.LI ">"
  1300. XA synonym for `s' - \fIsave\fR message or messages.
  1301. X.sp
  1302. X.LI "a"
  1303. XAlias, change to 'alias' mode 
  1304. X.LI "b"
  1305. XBounce - remail message**
  1306. X.LI "c"
  1307. XChange to new mail file
  1308. X.LI "d"
  1309. XDelete current message
  1310. X.LI "<control>-D"
  1311. XDelete all messages matching specified pattern
  1312. X.LI "e"
  1313. XEdit mailbox file, resyncing upon reentry.
  1314. X.LI "f"
  1315. XForward message to specified user\*F
  1316. X.FS
  1317. XThe difference between \fIForward\fR and \fIBounce\fR is rather 
  1318. Xsubtle -- a forwarded message is ``from'' you, with the
  1319. Xoriginal message included, whereas a bounced message
  1320. Xis still from the original sender.  
  1321. X.FE
  1322. X.LI "g" 
  1323. XGroup reply - reply to everyone who received the current message
  1324. X.LI "h"
  1325. XDisplay message + headers
  1326. X.LI "j"
  1327. XIncrement current message by one
  1328. X.LI "k"
  1329. XDecrement current message by one
  1330. X.LI "l"
  1331. XLimit displayed messages based on the specified criteria.  
  1332. X.LI "m"
  1333. XMail to arbitrary user(s)
  1334. X.LI "n or <return>"
  1335. XNext message (Read current, then increment)
  1336. X.LI "o"
  1337. XAlter current system options.
  1338. X.LI "p"
  1339. XPrint current message or tagged messages.
  1340. X.LI "q"
  1341. XQuit - mail deleted, saved in mbox or left.
  1342. X.LI "r"
  1343. XReply to the author of current message
  1344. X.LI "s"
  1345. XSave current message or tagged messages to file
  1346. X.LI "t"
  1347. XTag current message.
  1348. X.LI "<control>-T"
  1349. XTag all messages matching specified pattern.
  1350. X.LI "u"
  1351. XUndelete current message
  1352. X.LI "<control>-U"
  1353. XUndelete all messages matching specified pattern.
  1354. X.LI "x"
  1355. XExit - don't record as read, don't save...
  1356. X.sp
  1357. X.LI "^L"
  1358. XRewrite screen.
  1359. X.LI "^M (<return>)"
  1360. XRead current message
  1361. X.LI "^Q, DEL"
  1362. XExit - don't record as read, don't save...
  1363. X.LE
  1364. X.sp
  1365. X.P 0
  1366. XThat are all the commands available at the main level of the
  1367. X.B Elm
  1368. Xprogram!  Easy to remember, right?
  1369. X.sp 2
  1370. X\" again, make sure we start on a new page please
  1371. X.ne 10
  1372. X.P 0
  1373. XAs an example, let's enter a series of commands and indicate
  1374. Xwhat the display would be after each one;
  1375. X.sp
  1376. X.P 0
  1377. XFirst off, let's go to the next page of mail with `\fI<space>fR';
  1378. X.DS CB
  1379. X.mk a
  1380. X.ce
  1381. XMailbox is '/usr/mail/mymail' with 15 messages.  [Elm 1.5]
  1382. X
  1383. X.TS
  1384. Xr c r l l l l.
  1385. X ->    N    13    Apr 3    Jack    (17)    Wanna buy some albums cheap?
  1386. X    N    14    Apr 5    Jack    (8)    Cancel the previous offer!
  1387. X    N    15    Apr 5    sdcsvax!dx    (420)    Moving day (long) 
  1388. X.TE
  1389. X     
  1390. X  
  1391. X     
  1392. X     
  1393. X  
  1394. X  
  1395. X  
  1396. X  
  1397. X  
  1398. X
  1399. X.ce 3
  1400. XYou can use any of the following commands by pressing the first character;
  1401. XD)elete mail,  M)ail a message,  R)eply to mail,  U)ndelete, or Q)uit
  1402. XTo read a message, press <return>.  j = move arrow down, k = move arrow up
  1403. X
  1404. XCommand : @
  1405. X.sp 2
  1406. X.eb
  1407. X.DE
  1408. X.P 0
  1409. XLet's read the new current message, 13, by typing <\fIreturn\fR>.
  1410. X.DS CB
  1411. X.mk a
  1412. X.tl 'Message #13 from Jack''Mailed April 3, 1985 at 8:45 pm'
  1413. X
  1414. XI just found my old Lawrence Welk Platinum Hits series of albums and recall you 
  1415. Xsaying that you really enjoy listening to that sort of drivel...
  1416. X
  1417. XSo, do you want to buy them off of me before I make ashtrays out of them (or frisbees...)?
  1418. X
  1419. X                                                  Humourously,
  1420. X                                                                  Jack 
  1421. X
  1422. X
  1423. X
  1424. X
  1425. X
  1426. X
  1427. XPress <return> to return to Elm: @
  1428. X
  1429. X.eb
  1430. X.DE
  1431. X.P 0
  1432. XNeedless to say, we can't let this message go by without replying!
  1433. XSo let's press <\fIreturn\fR>, then use the
  1434. X.I "reply"
  1435. Xcommand to respond.
  1436. X.P 0
  1437. XAfter pressing the `\fIr\fR' key, the program asks if a copy of the 
  1438. Xmessage is desired (the character under the cursor indicates the
  1439. Xdefault if <return> is pressed.  In this case, the default is 'no');
  1440. X.sp
  1441. X.nf
  1442. X    copy message? (y/n) @
  1443. X.fi
  1444. X.P 0
  1445. XWe choose to answer no, so press the `\fIn\fR' key.  Next 
  1446. X.B Elm
  1447. Xdisplays whom the message will be sent to\*F and 
  1448. X.FS
  1449. XThe default action of the mailer is to display just the name
  1450. Xof the person or persons the message will be sent to.  If the actual
  1451. Xaddress is also desired, then the user needs to include "names=OFF" in
  1452. Xtheir \fI.elmrc\fR file.  See the \fIElm Reference Guide\fR for
  1453. Xmore information on this.
  1454. X.FE
  1455. Xverifies that the subject is okay;
  1456. X.sp
  1457. X.tl '    Command: Reply''To: Jack    '
  1458. X.tl '    Subject of Message: Re: Wanna buy some albums cheap?@'
  1459. X.sp
  1460. XTyping anything other than <return> will allow us
  1461. Xto change the subject to something more appropriate.
  1462. XWe decide, however, to leave it be and press <\fIreturn\fR> again.
  1463. X.P 0
  1464. XThe program then puts us
  1465. Xin the (default)
  1466. X.I vi
  1467. Xeditor with a newly created file
  1468. X.P 0
  1469. XAfter having entered a suitable reply, and left the editor,
  1470. Xthe 
  1471. X.B Elm
  1472. Xsystem then verifies that we really want to send the message with;
  1473. X.sp
  1474. X    Are you sure you want to send this message? (y/n) @
  1475. X.sp
  1476. XTo which our response is `\fIy\fR' for 'yes'.  It then sends the message off
  1477. Xto Jack, who will receive it hopefully quite soon (or at least
  1478. Xbefore he makes ashtrays out of the albums!)  
  1479. X.sp
  1480. X.P 0
  1481. XMessage 13 is still the current message,
  1482. Xso, now let's save it and the one after it from Jack, message 14,
  1483. Xby \fItagging\fR them both.  We press `\fIt\fR' for \fItag\fR, which 
  1484. Xputs the '+' tag indicator on this message, move to the next
  1485. Xmessage with the `\fIj\fR' key, then press `\fIs\fR' for \fIsave\fR
  1486. X.sp
  1487. XThis prompts for the file to save to;
  1488. X.nf
  1489. X
  1490. X   Save messages to: @
  1491. X
  1492. X.fi
  1493. Xto which we answer \fI=jack\fR.  The two messages are then saved to
  1494. Xthe specified file, marked for deletion, and the \fItags\fR are
  1495. Xremoved from them.
  1496. X.P 0
  1497. XThe screen is now;
  1498. X.DS CB
  1499. X.mk a
  1500. X.ce
  1501. XMailbox is '/usr/mail/mymail' with 15 messages.  [Elm 1.5]
  1502. X.nf
  1503. X
  1504. X.TS
  1505. Xr c r l l l l.
  1506. X ->    \ D    13    Apr 3    Jack    (17)    Wanna buy some albums cheap?
  1507. X    \ D    14    Apr 5    Jack    (8)    Cancel the previous offer!
  1508. X    N    15    Apr 5    sdcsvax!dx    (420)    Moving day (long) 
  1509. X.TE
  1510. X.sp 10    
  1511. X.ce 3
  1512. XYou can use any of the following commands by pressing the first character;
  1513. XD)elete mail,  M)ail a message,  R)eply to mail,  U)ndelete, or Q)uit
  1514. XTo read a message, press <return>.  j = move arrow down, k = move arrow up
  1515. X
  1516. XCommand : @
  1517. X.sp 2
  1518. X.eb
  1519. X.DE
  1520. X.P 0
  1521. XNow lets go back to the first page of messages by typing '\fI=\fR';
  1522. X.DS CB
  1523. X.mk a
  1524. X.ce
  1525. XMailbox is '/usr/mail/mymail' with 15 messages.  [Elm 1.5]
  1526. X.nf
  1527. X
  1528. X.TS
  1529. Xr c r l l l l.
  1530. X ->        1    Apr 3    rob    (24)    Doing anything tonight?
  1531. X        2    Apr 5    Joe    (154)    bug in gammon game
  1532. X        3    Apr 5    root    (13)
  1533. X        4    Apr 6    root    (7)    (continuation of previous message)
  1534. X    U    5    Apr 8    decvax!mouse    (68)    Re: net.music article decvax:495
  1535. X        6    Apr 13    John Jacobs    (194)    How can you hate RUSH?
  1536. X        7    Apr 15    kevin    (27)    More software requests
  1537. X    N    8    Apr 18    games    (26)    Hi there
  1538. X    N    9    Apr 18    Don Knuth    (354)    Your version of TeX...
  1539. X    N    10    Apr 23    Carl Smith    (53)    (More silly stuff
  1540. X    N    11    Apr 24    jad@hpcnoe    (84)    Chico?  Why go there?
  1541. X    N    12    Apr 24    Larry Fenske    (49)    hi there...
  1542. X.TE
  1543. X.sp
  1544. X.ce 3
  1545. XYou can use any of the following commands by pressing the first character;
  1546. XD)elete mail,  M)ail a message,  R)eply to mail,  U)ndelete, or Q)uit
  1547. XTo read a message, press <return>.  j = move arrow down, k = move arrow up
  1548. X
  1549. XCommand : @
  1550. X.sp 2
  1551. X.eb
  1552. X.DE
  1553. X.P 0
  1554. XNote five not only looks mildly interesting but it's an 
  1555. X\fBU\fRrgent message too!  So 
  1556. Xlet's read it by typing \fI5<return>\fR
  1557. Xto make that the current message, and press <\fIreturn\fR> again
  1558. Xto read it.  After reading
  1559. Xthe message we decide that it's utterly worthless, not even worth
  1560. Xreplying to, let alone saving, so we'll mark it
  1561. Xfor future deletion with the `d' \fIdelete\fR key.
  1562. X.P 0
  1563. XA `D' is put next to the message now...
  1564. X.P 0
  1565. XBefore we finish up, we suddenly remember that one of the 
  1566. Xmessages was supposed to be about how to write decent 
  1567. Xdocumentation for Unix software, so let's try to find it...
  1568. X.P 0
  1569. XFirst off, we'll move back to message one with the `\fI=\fR'
  1570. Xkey and then use the `/' \fIpattern matching\fR command:
  1571. X.nf
  1572. X
  1573. X    Command : Pattern                   / = match anywhere in messages
  1574. X    Match pattern: @
  1575. X
  1576. X.fi
  1577. Xwe'll type in \fIdocument\fR (it's case insensitive) and see if the system 
  1578. Xcan find it.  After a brief second or two it returns 'pattern not found.'
  1579. XHmm...maybe it's not either the from or the subject of
  1580. Xany of the messages...In case that's true, let's try using 
  1581. Xthe \fImatch anywhere in message\fR command;
  1582. X.P 0
  1583. XWe again type `/' for \fIpattern matching\fR;
  1584. X.nf
  1585. X
  1586. X    Command : Pattern                      / = match anywhere in messages
  1587. X    Match pattern: @
  1588. X
  1589. X.fi
  1590. XAnd now we'll use `/' again to get the match anywhere in file
  1591. Xoption.  Now the bottom of the screen looks like;
  1592. X.nf
  1593. X
  1594. X    Command : Pattern                     / = match anywhere in messages
  1595. X    Match pattern (in entire mailbox): @
  1596. X
  1597. X.fi
  1598. Xto which we respond \fIdocument\fR again.  
  1599. X.P 0
  1600. XThe mailer then searches through each line of all the messages in 
  1601. Xthe file and moves the current message pointer to message 
  1602. Xnumber 7.  A quick check reveals that this message indeed
  1603. Xcontains the word `document', but it's not the one we want,
  1604. Xso we're going to just get outta here!
  1605. X.P 0
  1606. XWe've had enough mail for today, so lets quit, leaving
  1607. Xall the mail in the incoming mailbox, except those few we've
  1608. Xmarked for deletion;
  1609. X.sp
  1610. X.I Quit
  1611. Xprompts;
  1612. X.sp
  1613. X.nf
  1614. X   Delete messages? (y/n) @
  1615. X.fi
  1616. X.sp
  1617. Xto which we answer `\fIy\fR' for yes.  The next prompt is then;
  1618. X.sp
  1619. X.nf
  1620. X   Keep mail in incoming mailbox? (y/n) @
  1621. X.fi
  1622. X.sp
  1623. Xto which we also answer yes...the program then quickly saves
  1624. Xthe files, removing message 5, 13 and 14 as it goes along, and exits.
  1625. X.sp 2
  1626. X.P 0
  1627. XAs you can see, the program is pretty easy to use!  In fact, it was
  1628. Xdesigned to be used without this documentation at all, so you 
  1629. Xcould toss this right now (but don't - think of the tree that 
  1630. Xsacrificed its precious life to allow this printout!)
  1631. X.sp 2
  1632. X.H 1 "Non-Interactive Uses of Elm"
  1633. X.P 1
  1634. XBefore we discuss the \fBElm\fR utilities, it's worth noting that 
  1635. Xthere are a couple of other ways to use the main mail
  1636. Xsystem, namely to 'send only' and to send files (batchmail).
  1637. X.P
  1638. XTo send a message to someone without any of the associated 
  1639. Xoverhead of the main system being loaded, you can invoke the
  1640. Xmailer with the name(s) of the people to send to.  The 
  1641. Xmailer will then prompt for Subject, Copies, and then drop
  1642. Xyou in your editor (defined in the \fI.elmrc\fR file) to compose
  1643. Xthe message.   When composition is complete, the program 
  1644. Xverifies transmission then terminates.  For example;
  1645. X.nf
  1646. X
  1647. X  $ \fBelm dave_taylor\fR
  1648. X  To: taylor@hplabs.HP.COM
  1649. X  Subject: \fBthis is a test\fR
  1650. X  Copies To: \fB<return>\fR
  1651. X
  1652. X  <invokes editor, message composed, then>
  1653. X
  1654. X  Are you sure you want to send this? (y/n) \fBy\fR
  1655. X
  1656. X  mail sent.
  1657. X
  1658. X  $
  1659. X
  1660. X.fi
  1661. XNote that the user input is in \fBbold\fR face, so you can see that
  1662. Xthe mailer verified the alias expansion too!
  1663. X.sp
  1664. X.P
  1665. XThe mailer also supports batch type mailing, of files and so on,
  1666. Xby using the following command;
  1667. X.nf
  1668. X
  1669. X  $ \fBelm dave_taylor < help.c\fR
  1670. X
  1671. X.fi
  1672. Xwhich will read in the file and transmit it to the specified user.
  1673. XA subject may be specified with ``-s \fIsubject\fR'' as an option
  1674. Xto the program, as in;
  1675. X.nf
  1676. X
  1677. X  $ \fBelm -s "File help.c, as promised" dave_taylor < help.c\fR
  1678. X
  1679. X.fi
  1680. X.sp 
  1681. X.H 1 "The Elm Utilities"
  1682. X.sp
  1683. X.P
  1684. XThe \fBElm\fR mail system is really much more than a single
  1685. Xprogram for reading and writing mail.  It's a unified 
  1686. Xenvironment for intelligently dealing with electronic
  1687. Xcorrespondence.  As a consequence, it contains a number of other
  1688. Xprograms to aid in the easy processing of `email', 
  1689. Xincluding the following;
  1690. X.VL 14 2
  1691. X.LI "answer"
  1692. XAn answering-machine transcription program.  Please see the
  1693. X`man'ual entry for more information on how to use this program.
  1694. X.LI "autoreply"
  1695. XThis program, in conjunction with the ``arepdaemon'', enables users
  1696. Xto automatically reply to incoming mail when they're not directly
  1697. Xavailable...
  1698. X.LI "checkalias"
  1699. XA script for checking aliases simply.
  1700. X.LI "messages"
  1701. XA script that lists the number of messages in the specified 
  1702. Xmailbox.  Suitable for login scripts and such.
  1703. X.LI "newalias"
  1704. XThis program installs new aliases - please see the 
  1705. X\fIElm Alias Users Guide\fR for more information.
  1706. X.LI "newmail"
  1707. XThis program is designed to be put into `background' and then
  1708. Xmonitors your incoming mailbox for new mail.  Whenever you
  1709. Xreceive new mail, the program will asynchronously write to the
  1710. Xscreen a notification, including whom the new mail is from and 
  1711. Xwhat the subjects of the messages are.  The output looks like;
  1712. X.DS
  1713. X>> New mail from Jimmy Carter - Urgent matters of state
  1714. X>> New mail from joe@ucbvax.arpa - Did I hear someone say PARTY??
  1715. X.DE
  1716. XThis is quite helpful for deciding in `real time' whether it's
  1717. Xnecessary to read the mail immediately or not.
  1718. X.LI "wnewmail"
  1719. XThis is extremely similar to \fInewmail\fR but is 
  1720. Xslightly modified to run in a windowing environment.
  1721. XThe differences are that it stays in `foreground' (thereby
  1722. Xtaking over a window entirely), and outputs for new 
  1723. Xmail in a slightly more succint format;
  1724. X.DS
  1725. XMail from Jimmy Carter -- Urgent matters of state
  1726. XMail From joe@ucbvax.arpa -- Did I hear someone say PARTY??
  1727. X.DE
  1728. X.LI "readmsg"
  1729. XThis handy little program can be used in two ways...first off,
  1730. Xit can be used to easily read a specific message in the
  1731. Xincoming mailbox, specified by ordinal number, by a string that
  1732. Xthe message contains, by the metacharacter `$' which 
  1733. Xrepresents the last message in the mailbox, or `*' which matches 
  1734. Xall the messages in the folder or mailbox.
  1735. X.P 0
  1736. XFor example;
  1737. X.DS
  1738. X$ \fBreadmsg 4 5 9 | lpr\fR
  1739. X.DE 
  1740. Xwould generate a printout, \fIsans\fR superfluous headers, of the fourth,
  1741. Xfifth and ninth messages in your mailbox.
  1742. X.DS
  1743. X$ \fBreadmsg Carter | page\fR
  1744. X.DE
  1745. Xwould be a fast way to read what `ole Jimmy has to say...
  1746. Xand
  1747. X.DS
  1748. X$ \fBreadmsg -h hear someone say\fR
  1749. X.DE
  1750. Xwould list, including all the message headers, the message
  1751. Xcontaining the string ``hear someone say''.
  1752. X.LI "from"
  1753. XSimilar to the Berkeley \fIfrom\fR command, this will
  1754. Xgive you a ``table of contents'' of either the current
  1755. Xmailbox or a mailbox of your choice.   It's useful to
  1756. Xsee what mail is pending, or what's in a mailbox.
  1757. XIf used with the `-n' option, it will number each message
  1758. Xin a way compatible with the arguments \fIreadmsg\fR
  1759. Xexpects to get, too!
  1760. X.LI "printmail"
  1761. XThis is a formatting routine that knows that mailboxes look
  1762. Xlike and inserts either formfeeds or dashed lines between
  1763. Xmessages.  It can be used in either of two ways - either 
  1764. Xa mailbox file can be \fIpiped\fR to it or it can be given
  1765. Xa list of mailbox file names to format.  The only option
  1766. Xon the program is `-d' which indicates that you want to have
  1767. Xa dashed line separating messages rather than a formfeed.
  1768. X.P 0
  1769. XFor example;
  1770. X.DS
  1771. X$ \fBprintmail -d | lpr\fR
  1772. X.DE
  1773. Xwill print out your current incoming mailbox, separating the messages
  1774. Xby a dashed line.
  1775. X.DS
  1776. X$ \fBreadmsg 3 4 10 | printmail | lpr\fR
  1777. X.DE
  1778. Xwill print messages 3, 4, and 10 from your incoming mailbox,
  1779. Xseparated by formfeeds (that is, each message will start on it's
  1780. Xown page).
  1781. X.P 0
  1782. XFinally,
  1783. X.DS
  1784. X$ \fBprintmail ~/mbox ~/Mail/mail.sent | lpr\fR
  1785. X.DE
  1786. Xwill print all the messages saved in \fImbox\fR and in your \fImail.sent\fR
  1787. Xfiles.  The second file will be started on a new page regardless of
  1788. Xthe presence or absence of the `-d' dashed line option.
  1789. X.sp
  1790. XIt should be noted that \fIprintmail\fR is almost competely superseded by
  1791. Xthe \fIreadmsg\fR command.  For example, the second example above could be
  1792. Xmore easily and quickly written as;
  1793. X.DS
  1794. X$ \fBreadmsg -p 3 4 10 | lpr\fR
  1795. X.DE
  1796. XIt is expected in future releases that this program will not be included.
  1797. X.LI "newalias"
  1798. XThis is used to install new user/group aliases.  Please see the
  1799. X\fIElm Alias Users Guide\fR for further information on this!
  1800. X.LI "fastmail"
  1801. XSometimes you want to have a batchmailing system that works as
  1802. Xquickly as possible, not bothering with aliases or any of the
  1803. Xother ``deluxe'' features of \fBElm\fR.  An example of this would
  1804. Xbe if you have a large mailing list for a newsletter, say.
  1805. XThis command, \fIfastmail\fR, is designed just for that purpose.
  1806. XIt avoids the lengthy startup time of \fBElm\fR while still
  1807. Xgenerating valid \fIRFC-822\fR\*F mail.
  1808. X.FS
  1809. XIf you don't know what RFC-822 is, don't worry about it!
  1810. X.FE
  1811. XPlease see the `man' entry for more information on this
  1812. Xcommand (use \fBman fastmail\fR after installation).
  1813. X.LI "trim-headers"
  1814. XA script to remove extraneous headers from archived (saved)
  1815. Xmail in folders.
  1816. X.LE
  1817. X.sp 3
  1818. X.H 1 "Credits and So on"
  1819. X.P
  1820. XThis mailer has been evolving over the past few years with
  1821. Xinvaluable comments on the interface and general mail 
  1822. Xissues from the following people;
  1823. XWalter Underwood, Larry Fenske, Rob Sartin,
  1824. XJohn Dilley (who got the Spectrum version checked out, too!) and Carl Dierschow.
  1825. X.sp
  1826. XFor the Berkeley implementation, lots of help came from
  1827. XJohn Lebovitz and Ken Stone.
  1828. X.sp
  1829. XFor the Amdahl/UTS implementation, thanks to Scott McGregor and
  1830. XStan Isaacs.
  1831. X.sp
  1832. XFor the Sun problems, Dave England in Lancaster (UK) turned out to be
  1833. X``bloody useful'', as he would no doubt say.
  1834. X.sp
  1835. XThe Pyramid version is due to the work of Steve Malone
  1836. Xof the University of Washington.
  1837. X.sp
  1838. XA number of other people have been amazingly disciplined at reporting 
  1839. Xproblems and (usually, much to my relief) indicating the fixes needed,
  1840. Xespecially Guy Hillyer, Bruce Townsend and Eric Negaard.
  1841. X.sp
  1842. XThere have been many, many others, too numerous to mention, that
  1843. Xhave inspired me with questions like "Why can't Elm..." or 
  1844. X"Why does it ..." or "Can we make it..." too.  A loud round of
  1845. Xapplause and an enthusiastic THANK YOU to you all!!
  1846. X.sp
  1847. XAlso helpful was the ability to have my `own' machine to 
  1848. Xclose up the many many iterative loops that this software
  1849. Xhas gone through - since being on a big multi-user machine
  1850. Xtends to slow it down to a standstill...
  1851. XFor that, I thank Hewlett-Packard Colorado Networks Division for their 
  1852. Xinitial support, and now HP Laboratories for the wonderful working 
  1853. Xenvironment that I have here (more than any one person is safe having, 
  1854. Xmost likely!)
  1855. X.sp 
  1856. XMailers that have influenced the design and implementation of \fBElm\fR, 
  1857. Xfor better or worse, include the following;
  1858. X.VL 12 1
  1859. X.LI "\fI/bin/mail\fR  "
  1860. XThe most basic of mailers, this one was simply the example of how \fInot\fR
  1861. Xto force the user to interact with a program.
  1862. X.LI "\fIBerkeley Mail\fR  "
  1863. XA suprisingly sophisticated mailer, especially the version with 4.3 BSD,
  1864. X\fIBerkeley Mail\fR still suffers from the tendency to force the user to
  1865. Xknow too much about the system, and also lacks a friendly, non-cryptic
  1866. Xinterface for the large subset of the population that use Unix but aren't
  1867. Xinterested in becoming a ``hacker''.
  1868. X.LI "\fIMH\fR  "
  1869. XThis is another nifty mailer.  The main difference between this and the
  1870. Xother mailers about is that it is a discrete set of programs rather than
  1871. Xa single unified interface.  This is quite useful for those people that
  1872. Xreceive \fIlots\fR of mail and are willing to spend some time learning
  1873. Xthe intricacies of the program.  It's quite powerful, but again, misses some
  1874. Xof the basic friendly features the majority of users are interested in.
  1875. X.LI "\fIdmail\fR  "
  1876. XA sort of mutated cross between \fIMH\fR and \fIBerkeley Mail\fR, it was
  1877. Xthis program that convinced me to implement the \fILimit\fR functions.
  1878. X.LI "\fINMail\fR  "
  1879. X(a part of the HP AI Workstation Software Environment).  This program hints
  1880. Xat the power that mailers could be given to help deal with mail in a quick
  1881. Xand intelligent fashion.  Most of what it can do, and a lot more, are 
  1882. Xtherefore part of \fBElm\fR.  Indubitably.  And quite faster too!
  1883. X.LI "\fIPMX/TERM\fR  "
  1884. XPart of the AT&T Mail package, a single glance at this interface convinced
  1885. Xme that a PC interface, with almost half of the screen taken up by a silly
  1886. Xfunction key mapping, is most certainly \fInot\fR the way to do things!!
  1887. XOn the other hand, it also shows that the \fIForms\fR mode can be quite
  1888. Xnicely integrated into a more sophisticated mailer.
  1889. X.LI "\fIfmail\fR  "
  1890. XA nickel addition to the \fI/bin/mail\fR program to add some rudimentary
  1891. Xscreen interface stuff, this nonetheless interesting mailer is part of 
  1892. Xthe AT&T Toolchest.
  1893. X.LI "\fILaurel\fR  "
  1894. XA program only available within Xerox PARC, this was an interesting
  1895. Xearly attempt at a graphics based full-screen mail program.  The one,
  1896. Xperhaps trivial, part of the interface I really like was the fact that
  1897. Xit would \fIcross out\fR a message that was marked for deletion.  One
  1898. Xday when we get real graphics and the ability to use them indicated in
  1899. Xa facility (not too) like \fItermcap\fR, perhaps \fBElm\fR will do 
  1900. Xthis too! 
  1901. X.LI "\fIMailtool\fR  "
  1902. XPart of the Sun distribution package, this program is a really nice
  1903. Xexample of what can be done by putting a smart shell on top of a dumb
  1904. Xprogram - it uses \fI/bin/mail\fR for all the `dirty work'.  Other than
  1905. Xthat, it's not a particularly interesting interface or mailer, and it
  1906. Xcertainly doesn't add much functionality!
  1907. X.LI "\fIFrankenmail\fR  "
  1908. XThis program is another \fIBerkeley Mail\fR style of interface, for 
  1909. Xthe most part.  This means that it
  1910. Xis still just as difficult to use for the 
  1911. Xneophyte Unix user.  The interface is more interesting when used on a 
  1912. XSun Microsystems machine, but \fIFrankenmail\fR isn't a step forward in 
  1913. Xmail technologies or interfaces.
  1914. X.LI "\fIMetamail\fR  "
  1915. XWhat can I say?  This isn't even a real mailer, but is just what I dream
  1916. Xof as an interface to mail in the future.  A program that works sort of
  1917. Xlike \fBHAL\fR did in \fI2001: A Space Odyssey\fR - where it interrupts
  1918. Xme as appropriate for important mail, and can answer inane and other
  1919. Xqueries itself according to what I teach it.  Maybe \fBElm\fR, by some sort
  1920. Xof groupmind metamorphosis, will change into that someday.  Maybe not.  Maybe
  1921. Xno-one bothers to read this far into the document!!
  1922. X.LE
  1923. X.sp
  1924. XFinally, it's also been a very useful experience overall,
  1925. Xconfirming my beliefs that iterative software design and
  1926. Xkeeping a close watch on users (not to mention an open
  1927. Xmind and mailbox!) improves a product manyfold.  Comments,
  1928. Xfeedback and bug reports (and fixes!) are, of course, always welcome!
  1929. END_OF_doc/Users.guide
  1930. if test 31420 -ne `wc -c <doc/Users.guide`; then
  1931.     echo shar: \"doc/Users.guide\" unpacked with wrong size!?
  1932. fi
  1933. # end of overwriting check
  1934. fi
  1935. echo shar: End of archive 18 \(of 19\).
  1936. cp /dev/null ark18isdone
  1937. DONE=true
  1938. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ; do
  1939.     if test ! -f ark${I}isdone ; then
  1940.     echo shar: You still need to run archive ${I}.
  1941.     DONE=false
  1942.     fi
  1943. done
  1944. if test "$DONE" = "true" ; then
  1945.     echo You have unpacked all 19 archives.
  1946.     echo "See the Instructions file"
  1947.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1948. fi
  1949. ##  End of shell archive.
  1950. exit 0
  1951.